/* CsJni - .NET / Java Bridge
 * 
 * Copyright 2010 Robert E. Burke Licensed under the Apache License, Version 
 * 2.0 (the "License"); you may not use this file except in compliance with 
 * the License. You may obtain a copy of the License at 
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable 
 * law or agreed to in writing, software distributed under the License is 
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
 * KIND, either express or implied. See the License for the specific language 
 * governing permissions and limitations under the License. 
*/

using System;
using System.Collections.Generic;
using System.Text;

namespace CsJni
{
    public class JniThreadContext : IDisposable
    {
        JniEnvironment mEnvironment;
        bool mIsNewThread;

        internal JniThreadContext(JniEnvironment environment, bool isNewThread)
        {
            mEnvironment = environment;
            mIsNewThread = isNewThread;
        }

        ~JniThreadContext()
        {
            Dispose(false);
        }

        public JniEnvironment Environment
        {
            get { return mEnvironment; }
        }

        public bool IsNew
        {
            get { return mIsNewThread; }
        }

        #region IDisposable Members

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        #endregion IDisposable Members

        private void Dispose(bool disposing)
        {
            if (!disposing)
            {
                throw new JniException("TODO");
            }
            if (mIsNewThread)
            {
                JavaVM.DetachCurrentThread();
            }
        }
    }
}
